JavaScript 生成器
阐述
语法
与 JavaScript 函数类似,但是 function
变为 function*
。在函数体中,用 yield
或 yield*
返回值,并且可以返回多次。
语义
设函数的名称为 f
,则它可以被如下方式使用:
- 用
f.next()
:返回由yield
或yield*
返回的值,形式为{value: ..., done: true/false}
; - 用
for ... of
:不需要判断。
实例
定义一个生成 ID 的函数:
function* idMaker() {
let index = 0;
while (true) {
yield index++;
}
}
const gen = idMaker();
console.log(gen.next().value); // 0
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
console.log(gen.next().value); // 3
性质
相关内容
生成器与 JavaScript 函数不同的地方:
- 不具有 JavaScript 箭头函数的写法
- 不能用于 JavaScript 构造函数